home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_400 / 422_02 / dosutil / showexe.c < prev    next >
C/C++ Source or Header  |  1994-03-20  |  2KB  |  51 lines

  1. /*
  2.  * Read and display information from the header record for a DOS "EXE" file.
  3.  *
  4.  * Compile with: cc showexe -fop
  5.  */
  6. #include <stdio.h>
  7.  
  8. struct EXEheader {
  9.     char sig1;
  10.     char sig2;
  11.     unsigned largest_block;
  12.     unsigned number_of_blocks;
  13.     unsigned num_reloc_table;
  14.     unsigned size_of_header;
  15.     unsigned min_add_ram;
  16.     unsigned max_add_ram;
  17.     unsigned ss_offset;
  18.     unsigned initial_sp;
  19.     unsigned checksum;
  20.     unsigned initial_ip;
  21.     unsigned cs_offset;
  22.     unsigned first_rel_item; } ;
  23.  
  24. main(argc, argv)
  25.     int argc;
  26.     char *argv[];
  27. {
  28.     struct EXEheader header;
  29.     FILE *fp;
  30.  
  31.     if(argc < 2)
  32.         abort("Use: showexe <filename>\n");
  33.  
  34.     fp = fopen(argv[1], "rvqb");
  35.     fread(header, sizeof(header), fp);
  36.     fclose(fp);
  37.     printf("Signature: '%c%c'\n", header.sig1, header.sig2);
  38.     printf("Last block size: %u\n", header.largest_block);
  39.     printf("Number of blocks: %u\n", header.number_of_blocks);
  40.     printf("Number of items in relocation table: %u\n", header.num_reloc_table);
  41.     printf("Size of header (in paragraphs): %u\n", header.size_of_header);
  42.     printf("MIN additional RAM required: %u\n", header.min_add_ram);
  43.     printf("MAX additional RAM required: %u\n", header.max_add_ram);
  44.     printf("Offset to SS (in paragraphs): %u\n", header.ss_offset);
  45.     printf("Initial stack pointer: $%04x\n", header.initial_sp);
  46.     printf("Checksum: %04x\n", header.checksum);
  47.     printf("Initial Instruction Pointer: $%04x\n", header.initial_ip);
  48.     printf("Offset to CS (in paragraphs): %u\n", header.cs_offset);
  49.     printf("Offset of first relocatable item: $%04x\n", header.first_rel_item);
  50. }
  51.